import mods.modularmachinery.RecipePrimer;
import mods.modularmachinery.RecipeBuilder;
import crafttweaker.item.IItemStack;
import crafttweaker.item.IIngredient;
import crafttweaker.liquid.ILiquidStack;
import crafttweaker.oredict.IOreDict;
import crafttweaker.oredict.IOreDictEntry;
import crafttweaker.data.IData;

// Machine Casing
RecipeBuilder.newBuilder("m_assemble_casing_0","modular_assembler",20).
addItemInput(<modularmachinery:itemmodularium>*1).
addItemInput(<minecraft:redstone>*2).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockcasing:0>).
build();

// Machine Controller
RecipeBuilder.newBuilder("m_assemble_controller","modular_assembler",50).
addItemInput(<modularmachinery:blockcasing>*1).
addItemInput(<modularmachinery:itemmodularium>*4).
addItemInput(<minecraft:diamond>*2).
addItemInput(<minecraft:redstone>*8).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockcontroller>).
build();

// Reinforced Machine Casing
RecipeBuilder.newBuilder("m_assemble_casing_4","modular_assembler",200).
addItemInput(<modularmachinery:blockcasing>*1).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<minecraft:obsidian>*2).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockcasing:4>*1).
build();

// Machine Vent
RecipeBuilder.newBuilder("m_assemble_casing_1","modular_assembler",100).
addItemInput(<modularmachinery:blockcasing>*1).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<minecraft:iron_bars>*6).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockcasing:1>*1).
build();

// Firebox Casing
RecipeBuilder.newBuilder("m_assemble_casing_2","modular_assembler",100).
addItemInput(<modularmachinery:blockcasing>*1).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<thermalfoundation:material:352>*6).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockcasing:2>*1).
build();

// Machine Gearbox
RecipeBuilder.newBuilder("m_assemble_casing_3","modular_assembler",100).
addItemInput(<modularmachinery:blockcasing>*1).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<thermalfoundation:material:24>*8).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockcasing:3>*1).
build();

// Machine Circuitry
RecipeBuilder.newBuilder("m_assemble_casing_5","modular_assembler",100).
addItemInput(<modularmachinery:blockcasing>*1).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<mekanism:controlcircuit>*4).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockcasing:5>*1).
build();

// Mana Input
RecipeBuilder.newBuilder("m_assmble_mana_input","modular_assembler",100).
addItemInput(<modularmachinery:blockcasing>*1).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<botania:pool>*1).
addEnergyPerTickInput(50).
addItemOutput(<gugu-utils:sparkmanahatch:1>*1).
build();

// Mana Output
RecipeBuilder.newBuilder("m_assemble_mana_output","modular_assembler",100).
addItemInput(<modularmachinery:blockcasing>*1).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<botania:manatablet>*1).
addEnergyPerTickInput(50).
addItemOutput(<gugu-utils:sparkmanahatch:0>*1).
build();

// Starlight Input (Basic)
RecipeBuilder.newBuilder("m_assemble_star_input0","modular_assembler",100).
addItemInput(<modularmachinery:blockcasing>*1).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<astralsorcery:itemcraftingcomponent>*2).
addEnergyPerTickInput(50).
addItemOutput(<gugu-utils:starlightinputhatch>*1).
build();

// Starlight Input (Trait)
RecipeBuilder.newBuilder("m_assemble_star_input1","modular_assembler",200).
addItemInput(<gugu-utils:starlightinputhatch>*1).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<astralsorcery:itemcraftingcomponent:1>*4).
addEnergyPerTickInput(50).
addItemOutput(<gugu-utils:starlightinputhatch:1>*1).
build();

// Starlight Input (Brilliant)
RecipeBuilder.newBuilder("m_assemble_star_input2","modular_assembler",300).
addItemInput(<gugu-utils:starlightinputhatch:1>*1).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<astralsorcery:itemcraftingcomponent:4>*12).
addEnergyPerTickInput(50).
addItemOutput(<gugu-utils:starlightinputhatch:2>*1).
build();



// I: Item, F: Fluid, E: Energy
// I: Input, O: Output

// Lv1 Port Assemble
RecipeBuilder.newBuilder("m_assemble_II_1","modular_assembler",40).
addItemInput(<minecraft:hopper>*1).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockcasing>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockinputbus>*1).
build();
RecipeBuilder.newBuilder("m_assemble_IO_1","modular_assembler",40).
addItemInput(<minecraft:hopper>*1).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockcasing>*1).
addItemInput(<minecraft:redstone_torch>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockoutputbus>*1).
build();
RecipeBuilder.newBuilder("m_assemble_FI_1","modular_assembler",40).
addItemInput(<minecraft:bucket>*1).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockcasing>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockfluidinputhatch>*1).
build();
RecipeBuilder.newBuilder("m_assemble_FO_1","modular_assembler",40).
addItemInput(<minecraft:bucket>*1).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockcasing>*1).
addItemInput(<minecraft:redstone_torch>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockfluidoutputhatch>*1).
build();
RecipeBuilder.newBuilder("m_assemble_EI_1","modular_assembler",40).
addItemInput(<minecraft:redstone>*5).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockcasing>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockenergyinputhatch>*1).
build();
RecipeBuilder.newBuilder("m_assemble_EO_1","modular_assembler",40).
addItemInput(<minecraft:redstone>*5).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockcasing>*1).
addItemInput(<minecraft:redstone_torch>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockenergyoutputhatch>*1).
build();

// Lv2 Port Assemble
RecipeBuilder.newBuilder("m_assemble_II_2","modular_assembler",80).
addItemInput(<minecraft:hopper>*2).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockinputbus>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockinputbus:1>*1).
build();
RecipeBuilder.newBuilder("m_assemble_IO_2","modular_assembler",80).
addItemInput(<minecraft:hopper>*2).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockoutputbus>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockoutputbus:1>*1).
build();
RecipeBuilder.newBuilder("m_assemble_FI_2","modular_assembler",80).
addItemInput(<minecraft:bucket>*2).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockfluidinputhatch>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockfluidinputhatch:1>*1).
build();
RecipeBuilder.newBuilder("m_assemble_FO_2","modular_assembler",80).
addItemInput(<minecraft:bucket>*2).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockfluidoutputhatch>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockfluidoutputhatch:1>*1).
build();
RecipeBuilder.newBuilder("m_assemble_EI_2","modular_assembler",80).
addItemInput(<minecraft:redstone>*10).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockenergyinputhatch>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockenergyinputhatch:1>*1).
build();
RecipeBuilder.newBuilder("m_assemble_EO_2","modular_assembler",80).
addItemInput(<minecraft:redstone>*10).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockenergyoutputhatch>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockenergyoutputhatch:1>*1).
build();

// Lv3 Port Assemble
RecipeBuilder.newBuilder("m_assemble_II_3","modular_assembler",100).
addItemInput(<minecraft:hopper>*3).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockinputbus:1>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockinputbus:2>*1).
build();
RecipeBuilder.newBuilder("m_assemble_IO_3","modular_assembler",100).
addItemInput(<minecraft:hopper>*3).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockoutputbus:1>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockoutputbus:2>*1).
build();
RecipeBuilder.newBuilder("m_assemble_FI_3","modular_assembler",100).
addItemInput(<minecraft:bucket>*3).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockfluidinputhatch:1>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockfluidinputhatch:2>*1).
build();
RecipeBuilder.newBuilder("m_assemble_FO_3","modular_assembler",100).
addItemInput(<minecraft:bucket>*3).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockfluidoutputhatch:1>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockfluidoutputhatch:2>*1).
build();
RecipeBuilder.newBuilder("m_assemble_EI_3","modular_assembler",100).
addItemInput(<minecraft:redstone>*15).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockenergyinputhatch:1>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockenergyinputhatch:2>*1).
build();
RecipeBuilder.newBuilder("m_assemble_EO_3","modular_assembler",100).
addItemInput(<minecraft:redstone>*15).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockenergyoutputhatch:1>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockenergyoutputhatch:2>*1).
build();

// Lv4 Port Assemble
RecipeBuilder.newBuilder("m_assemble_II_4","modular_assembler",120).
addItemInput(<minecraft:hopper>*4).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockcasing:4>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockinputbus:3>*1).
build();
RecipeBuilder.newBuilder("m_assemble_IO_4","modular_assembler",120).
addItemInput(<minecraft:hopper>*4).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockcasing:4>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockoutputbus:3>*1).
build();
RecipeBuilder.newBuilder("m_assemble_FI_4","modular_assembler",120).
addItemInput(<minecraft:bucket>*4).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockcasing:4>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockfluidinputhatch:3>*1).
build();
RecipeBuilder.newBuilder("m_assemble_FO_4","modular_assembler",120).
addItemInput(<minecraft:bucket>*4).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockcasing:4>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockfluidoutputhatch:3>*1).
build();
RecipeBuilder.newBuilder("m_assemble_EI_4","modular_assembler",120).
addItemInput(<minecraft:redstone>*20).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockcasing:4>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockenergyinputhatch:3>*1).
build();
RecipeBuilder.newBuilder("m_assemble_EO_4","modular_assembler",120).
addItemInput(<minecraft:redstone>*20).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockcasing:4>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockenergyoutputhatch:3>*1).
build();

// Lv5 Port Assemble
RecipeBuilder.newBuilder("m_assemble_II_5","modular_assembler",140).
addItemInput(<minecraft:hopper>*5).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockinputbus:3>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockinputbus:4>*1).
build();
RecipeBuilder.newBuilder("m_assemble_IO_5","modular_assembler",140).
addItemInput(<minecraft:hopper>*5).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockoutputbus:3>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockoutputbus:4>*1).
build();
RecipeBuilder.newBuilder("m_assemble_FI_5","modular_assembler",140).
addItemInput(<minecraft:bucket>*5).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockfluidinputhatch:3>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockfluidinputhatch:4>*1).
build();
RecipeBuilder.newBuilder("m_assemble_FO_5","modular_assembler",140).
addItemInput(<minecraft:bucket>*5).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockfluidoutputhatch:3>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockfluidoutputhatch:4>*1).
build();
RecipeBuilder.newBuilder("m_assemble_EI_5","modular_assembler",140).
addItemInput(<minecraft:redstone>*25).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockenergyinputhatch:3>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockenergyinputhatch:4>*1).
build();
RecipeBuilder.newBuilder("m_assemble_EO_5","modular_assembler",140).
addItemInput(<minecraft:redstone>*25).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockenergyoutputhatch:3>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockenergyoutputhatch:4>*1).
build();

// Lv6 Port Assemble
RecipeBuilder.newBuilder("m_assemble_II_6","modular_assembler",160).
addItemInput(<minecraft:hopper>*6).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockinputbus:4>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockinputbus:5>*1).
build();
RecipeBuilder.newBuilder("m_assemble_IO_6","modular_assembler",160).
addItemInput(<minecraft:hopper>*6).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockoutputbus:4>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockoutputbus:5>*1).
build();
RecipeBuilder.newBuilder("m_assemble_FI_6","modular_assembler",160).
addItemInput(<minecraft:bucket>*6).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockfluidinputhatch:4>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockfluidinputhatch:5>*1).
build();
RecipeBuilder.newBuilder("m_assemble_FO_6","modular_assembler",160).
addItemInput(<minecraft:bucket>*6).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockfluidoutputhatch:4>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockfluidoutputhatch:5>*1).
build();
RecipeBuilder.newBuilder("m_assemble_EI_6","modular_assembler",160).
addItemInput(<minecraft:redstone>*30).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockenergyinputhatch:4>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockenergyinputhatch:5>*1).
build();
RecipeBuilder.newBuilder("m_assemble_EO_6","modular_assembler",160).
addItemInput(<minecraft:redstone>*30).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockenergyoutputhatch:4>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockenergyoutputhatch:5>*1).
build();

// Lv7 Port Assemble
RecipeBuilder.newBuilder("m_assemble_II_7","modular_assembler",180).
addItemInput(<minecraft:hopper>*7).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockinputbus:5>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockinputbus:6>*1).
build();
RecipeBuilder.newBuilder("m_assemble_IO_7","modular_assembler",180).
addItemInput(<minecraft:hopper>*7).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockoutputbus:5>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockoutputbus:6>*1).
build();
RecipeBuilder.newBuilder("m_assemble_FI_7","modular_assembler",180).
addItemInput(<minecraft:bucket>*7).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockfluidinputhatch:5>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockfluidinputhatch:6>*1).
build();
RecipeBuilder.newBuilder("m_assemble_FO_7","modular_assembler",180).
addItemInput(<minecraft:bucket>*7).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockfluidoutputhatch:5>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockfluidoutputhatch:6>*1).
build();
RecipeBuilder.newBuilder("m_assemble_EI_7","modular_assembler",180).
addItemInput(<minecraft:redstone>*35).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockenergyinputhatch:5>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockenergyinputhatch:6>*1).
build();
RecipeBuilder.newBuilder("m_assemble_EO_7","modular_assembler",180).
addItemInput(<minecraft:redstone>*35).
addItemInput(<modularmachinery:itemmodularium>*2).
addItemInput(<modularmachinery:blockenergyoutputhatch:5>*1).
addEnergyPerTickInput(50).
addItemOutput(<modularmachinery:blockenergyoutputhatch:6>*1).
build();